PRISMAstatement::prisma(found = 8002,
found_other = 7,
no_dupes = 7187,
screened = 7187,
screen_exclusions = 6913,
full_text = 274,
full_text_exclusions = 124,
qualitative = 144,
quantitative = 144,
width = 800, height = 1200)
## Warning in prisma_graph(found = found, found_other = found_other, no_dupes =
## no_dupes, : After full-text exclusions, a different number of remaining articles
## for qualitative synthesis is stated.
n_sample = dat.meta.long %>%
summarise(n=length(unique(paste(ID_study, Echantillons_indépendants))))
data.frame(n_sample=n_sample, dat_tot)
## n n_studies n_es n_nexp_out n_exp_out
## 1 153 143 647 8322 8005
dat.borenstein %>%
group_by(outcome_RDoC_agg) %>%
summarise(n_es = sum(trial),
n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
n_study2 = length(unique(ID_study)))
## # A tibble: 4 x 5
## outcome_RDoC_agg n_es n_exp n_nexp n_study2
## <chr> <dbl> <dbl> <dbl> <int>
## 1 Mixed social processes 223 5847 5506 87
## 2 Reception of facial communication 186 2094 2168 45
## 3 Reception of non-facial communication 28 522 580 9
## 4 Understanding mental states 210 2726 2630 59
synth_n = dat.borenstein %>%
group_by(outcome_RDoC) %>%
summarise(n_es = sum(trial),
n_exp = sum(n_exp),
n_nexp = sum(n_nexp),
nstudy1 = n(),
n_study2 = length(unique(ID_study)))
synth_n
## # A tibble: 8 x 6
## outcome_RDoC n_es n_exp n_nexp nstudy1 n_stu~1
## <chr> <dbl> <dbl> <dbl> <int> <int>
## 1 Mixed social processes (adjusted) 14 277 306 8 8
## 2 Mixed social processes (non-adjusted) 209 5570 5200 82 82
## 3 Reception of facial communication (adjuste~ 18 382 511 6 6
## 4 Reception of facial communication (non-adj~ 168 1712 1657 42 42
## 5 Reception of non-facial communication (adj~ 3 141 254 2 2
## 6 Reception of non-facial communication (non~ 25 381 326 8 8
## 7 Understanding mental states (adjusted) 24 245 274 9 9
## 8 Understanding mental states (non-adjusted) 186 2481 2356 55 55
## # ... with abbreviated variable name 1: n_study2
dat.meta.long %>%
group_by(outcome_RDoC) %>%
summarise(n=length(unique(paste(ID_study, Echantillons_indépendants))))
## # A tibble: 8 x 2
## outcome_RDoC n
## <chr> <int>
## 1 Mixed social processes (adjusted) 8
## 2 Mixed social processes (non-adjusted) 86
## 3 Reception of facial communication (adjusted) 7
## 4 Reception of facial communication (non-adjusted) 44
## 5 Reception of non-facial communication (adjusted) 2
## 6 Reception of non-facial communication (non-adjusted) 8
## 7 Understanding mental states (adjusted) 9
## 8 Understanding mental states (non-adjusted) 58
ggplot(dat.meta, aes(x = es_adj, y = es)) +
geom_jitter(alpha = 0.3, width = 0.35, size = 2) +
geom_violin(size = 0.5, alpha = 0.5) +
theme_bw()
2 plots, tu choisis celui qui tu préfères
ggplot(dat.meta, aes(x = outcome_RDoC_agg, y = es)) +
geom_jitter(width = 0.05, dotsize = 0.1, alpha = 0.2, aes(fill = ID)) + geom_boxplot(trim=FALSE, alpha = 0.6) +
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
guides(fill=FALSE) +
coord_flip()
ggplot(dat.meta, aes(x = outcome_RDoC_agg, y = es)) +
geom_violin(aes(fill = outcome_RDoC_agg), alpha = 0.3) +
geom_jitter(alpha = 0.2, width = 0.1) +
geom_boxplot(width=0.1)+
facet_grid(es_adj ~ "") +
theme_bw() +
labs(y = "Standardized mean difference (SMD)", x = "") +
theme(text = element_text(size = 18),
legend.position = "none",
axis.title.y = element_text(size=12, face="bold"),
axis.title.x = element_text(size=12, face="bold")) +
coord_flip()
V.SCE <- with(dat.meta,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ <- metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ outcome_RDoC - 1)
het = function(x, y) {
i2 = NA
for (i in 1:nrow(vcov(x))) {
i2[i] = 100 * (vcov(x)[i,i] - vcov(y)[i,i]) / vcov(x)[i,i]
}
return(i2)
}
res.SCE <- data.frame(clubSandwich::coef_test(SCE, vcov = "CR2", cluster = dat.meta$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci = data.frame(clubSandwich::conf_int(SCE, vcov = "CR2", cluster = dat.meta$ID_study))
res.SCE$target <- gsub("outcome_RDoC", "", row.names(res.SCE))
res.SCE.ci$target <- gsub("outcome_RDoC", "", row.names(res.SCE.ci))
res.SCE = dplyr::left_join(res.SCE, res.SCE.ci)
res.SCE$tau2 = SCE$tau2
res.SCE$I2 = het(SCE, SCE.ISQ)
res_main <- left_join(res.SCE, dat_RDoC)
## Joining, by = "target"
res_main$p_Satt_bonferroni = res_main$p_Satt * 8
res_main[,c("beta", "SE", "tstat", "df", "p_Satt",
"p_Satt_bonferroni", "CI_L", "CI_U", "tau2", "I2",
"n_studies", "n_nexp_out" , "n_exp_out")] <- apply(
res_main[,c("beta", "SE", "tstat", "df", "p_Satt",
"p_Satt_bonferroni", "CI_L", "CI_U", "tau2", "I2",
"n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
DT::datatable(res_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_main$SE_COR = (res_main$CI_U - res_main$CI_L) / (3.92)
res_main$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_main$outcome_RDoC))
tab.plot <- data.frame(
Outcome = do.call(rbind, lapply(res_main$outcome_RDoC,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_main$n_exp_out,
n_nexpT = res_main$n_nexp_out,
n_studies = res_main$n_studies,
tau2 = res_main$tau2,
I2 = paste0(round(res_main$I2), "%"))
value_num_plot = data.frame(apply(res_main[, c("beta", "SE_COR")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot[ ,c("beta", "SE_COR")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot,
group = res_main$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot$n_ADHD + tab.plot$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
# windows() ## create window to plot your file, eval = FALSE
metafor::profile.rma.mv(SCE)
## Profiling tau2 = 1
## Profiling tau2 = 2
## Profiling tau2 = 3
## Profiling tau2 = 4
## Profiling tau2 = 5
## Profiling tau2 = 6
## Profiling tau2 = 7
## Profiling tau2 = 8
# dev.off()
meta.reg <- metafor::rma.mv(yi = es, V = se^2,
data = dat.borenstein,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
mods = ~ outcome_RDoC - 1)
res.S1.a.clean = data.frame(
beta = meta.reg$beta,
se = meta.reg$se,
ci_lo = meta.reg$ci.lb,
ci_up = meta.reg$ci.ub,
pval = meta.reg$pval,
target = gsub("outcome_RDoC", "", row.names(meta.reg$b)))
res.S1 <- left_join(res.S1.a.clean, dat_RDoC)
## Joining, by = "target"
DT::datatable(res.S1,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
robu.main <- robumeta::robu(es ~ outcome_RDoC - 1,
data = dat.meta,
studynum = ID_study,
var.eff.size = se^2,
modelweights = "CORR",
small = TRUE,
rho = 0.8)
dat_robu_main = data.frame(
beta = robu.main$reg_table$b.r,
se = robu.main$reg_table$SE,
ci_lo = robu.main$reg_table$CI.L,
ci_up = robu.main$reg_table$CI.U,
pval = robu.main$reg_table$prob,
target = gsub("outcome_RDoC", "", row.names(meta.reg$b)),
target2 = robu.main$reg_table$labels)
DT::datatable(dat_robu_main,
rownames = FALSE,
extensions = 'Buttons',
options = list( # options
buttons = c('copy', 'excel'),
scrollX = TRUE,
dom = c('ftB'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res.SCE.main = data.frame(
beta = res.SCE$beta,
se = res.SCE$SE,
ci_lo = res.SCE$CI_L,
ci_up = res.SCE$CI_U,
pval = res.SCE$p_Satt,
target =res.SCE$target)
res.SCE.main$Analysis = "SCE approach"
res.S1.a.clean$Analysis = "Borenstein approach"
dat_robu_main$Analysis = "RVE approach"
dat_forest_S1 = bind_rows(res.SCE.main,
res.S1.a.clean,
dat_robu_main)
meta_res_tot = meta::metagen(TE = beta, seTE = (ci_up-ci_lo)/(2*qnorm(.975)),
sm = "SMD", data = dat_forest_S1,
subgroup = target,
studlab = Analysis)
meta::forest(meta_res_tot, random = FALSE, fixed = FALSE,
leftcols = c("studlab"),
text.subgroup.nohet = FALSE, print.tau2 = FALSE, print.I2 = FALSE, print.pval.Q = FALSE,
plotwidth = "15cm", colgap.left = "1cm", colgap.right = "1cm",
leftlabs= c(""),
just = "right", spacing = 0.8)
dat.meta$inv_n_tilda <- with(dat.meta, (n_nexp + n_exp)/(n_nexp*n_exp))
dat.meta$sqrt_inv_n_tilda <- with(dat.meta, sqrt(inv_n_tilda))
nak.pb = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ 1 + sqrt_inv_n_tilda + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(nak.pb, vcov = "CR2", cluster = dat.meta$ID_study)
## Coef. Estimate
## 1 intrcpt 0.1186
## 2 sqrt_inv_n_tilda 5.2643
## 3 outcome_RDoCMixed social processes (non-adjusted) -0.0963
## 4 outcome_RDoCReception of facial communication (adjusted) -0.8001
## 5 outcome_RDoCReception of facial communication (non-adjusted) -0.7753
## 6 outcome_RDoCReception of non-facial communication (adjusted) -0.9654
## 7 outcome_RDoCReception of non-facial communication (non-adjusted) -0.8645
## 8 outcome_RDoCUnderstanding mental states (adjusted) -0.8528
## 9 outcome_RDoCUnderstanding mental states (non-adjusted) -0.6526
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.537 0.221 8.96 0.8300
## 2 1.950 2.700 17.65 0.0148 *
## 3 0.257 -0.374 8.55 0.7172
## 4 0.317 -2.520 10.62 0.0291 *
## 5 0.264 -2.938 9.35 0.0159 *
## 6 0.365 -2.643 2.16 0.1091
## 7 0.292 -2.962 11.74 0.0121 *
## 8 0.316 -2.699 9.79 0.0227 *
## 9 0.257 -2.543 9.26 0.0309 *
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ se,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2",
cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -2.91 0.452 -6.43 72.7 <0.001 ***
## 2 se 14.52 1.691 8.59 24.5 <0.001 ***
dat.meta$var = dat.meta$se^2
PET = metafor::rma.mv(yi = es, V = V.SCE,
data = dat.meta,
mods = ~ var,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(PET, vcov = "CR2",
cluster = dat.meta$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt -0.865 0.186 -4.64 75.7 <0.001 ***
## 2 var 23.458 2.451 9.57 18.9 <0.001 ***
dat_egger = data.frame(
meta_review = "Haza",
study = dat.borenstein$ID_study,
factor = dat.borenstein$outcome_RDoC,
value = dat.borenstein$es,
se = dat.borenstein$se,
n_cases = dat.borenstein$n_exp,
n_controls = dat.borenstein$n_nexp,
measure = "G")
umb = metaumbrella::umbrella(dat_egger)
## Analyzing factor: Understanding mental states (non-adjusted)
## Analyzing factor: Mixed social processes (non-adjusted)
## Analyzing factor: Mixed social processes (adjusted)
## Analyzing factor: Understanding mental states (adjusted)
## - An error occured when converting the standard error of G to SMD. The standard error of the SMD was assumed to be equal to 'sqrt(1/n_cases + 1/n_controls)'.
## Analyzing factor: Reception of facial communication (non-adjusted)
## Analyzing factor: Reception of non-facial communication (non-adjusted)
## - An error occured when converting the standard error of G to SMD. The standard error of the SMD was assumed to be equal to 'sqrt(1/n_cases + 1/n_controls)'.
## Analyzing factor: Reception of facial communication (adjusted)
## Analyzing factor: Reception of non-facial communication (adjusted)
umb
##
## Umbrella review:
## Factor n_studies total_n
## 1 Understanding mental states (non-adjusted) 55 4837
## 2 Mixed social processes (non-adjusted) 82 10770
## 3 Mixed social processes (adjusted) 8 583
## 4 Understanding mental states (adjusted) 9 519
## 5 Reception of facial communication (non-adjusted) 42 3369
## 6 Reception of non-facial communication (non-adjusted) 8 707
## 7 Reception of facial communication (adjusted) 6 893
## 8 Reception of non-facial communication (adjusted) 2 395
## n_cases n_controls measure value value_CI eG eG_CI eOR
## 1 2481 2356 G 0.799 [0.655, 0.944] 0.799 [0.655, 0.944] 4.263
## 2 5570 5200 G 1.077 [0.928, 1.226] 1.077 [0.928, 1.226] 7.050
## 3 277 306 G 1.257 [0.607, 1.908] 1.257 [0.607, 1.908] 9.782
## 4 245 274 G 0.879 [0.455, 1.304] 0.879 [0.455, 1.304] 4.928
## 5 1712 1657 G 0.802 [0.623, 0.981] 0.802 [0.623, 0.981] 4.283
## 6 381 326 G 0.985 [0.602, 1.369] 0.985 [0.602, 1.369] 5.970
## 7 382 511 G 0.420 [0.21, 0.63] 0.420 [0.21, 0.63] 2.142
## 8 141 254 G 0.344 [-0.057, 0.744] 0.344 [-0.057, 0.744] 1.865
## eOR_CI p_value I2 PI_eG PI_eOR egger_p
## 1 [3.278, 5.544] 2.91e-27 83.349 [-0.181, 1.78] [0.72, 25.238] 4.53e-01
## 2 [5.379, 9.24] 1.84e-45 89.243 [-0.206, 2.36] [0.688, 72.219] 3.76e-04
## 3 [3.008, 31.817] 1.51e-04 91.236 [-1.084, 3.598] [0.14, 683.241] 2.73e-01
## 4 [2.283, 10.638] 4.87e-05 79.000 [-0.607, 2.366] [0.332, 73.042] 1.45e-01
## 5 [3.097, 5.923] 1.45e-18 85.782 [-0.287, 1.891] [0.594, 30.875] 2.95e-01
## 6 [2.978, 11.97] 4.78e-07 80.392 [-0.288, 2.258] [0.594, 60.052] 7.73e-01
## 7 [1.463, 3.136] 9.09e-05 53.229 [-0.182, 1.022] [0.719, 6.381] 7.37e-01
## 8 [0.902, 3.853] 9.24e-02 47.744 < 3 studies < 3 studies < 3 studies
## ESB_p power_med JK_p largest_CI_eG largest_CI_eOR rob amstar
## 1 9.91e-01 100.0 5.44e-26 [-0.304, 0.449] [0.576, 2.258] NA NA
## 2 1.57e-01 100.0 4.14e-44 [-0.154, 0.883] [0.757, 4.957] NA NA
## 3 6.73e-01 100.0 1.53e-03 [0.623, 1.315] [3.095, 10.864] NA NA
## 4 3.78e-01 100.0 3.44e-04 [0.271, 0.939] [1.634, 5.494] NA NA
## 5 7.20e-01 100.0 1.69e-17 [1.259, 1.804] [9.804, 26.348] NA NA
## 6 3.54e-01 100.0 3.14e-05 [0.967, 1.419] [5.776, 13.118] NA NA
## 7 4.24e-01 100.0 4.52e-03 [0.218, 1.22] [1.484, 9.15] NA NA
## 8 <NA> 99.7 6.41e-01 [0.165, 0.879] [1.348, 4.928] NA NA
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse"))
V.SCE4 <- with(dat.meta4,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S4 <- metafor::rma.mv(yi = es, V = V.SCE4,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.8392 0.0536 15.644 88.8 <0.001 ***
## 2 Type_publicationThèse 0.0605 0.1208 0.501 13.2 0.625
SCE.S4 <- metafor::rma.mv(yi = es, V = V.SCE4,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.839 0.0536 15.64 88.8 <0.001 ***
## 2 Type_publicationThèse 0.900 0.1082 8.31 10.2 <0.001 ***
dat.meta4 = subset(dat.meta, Type_publication %in%
c("Article", "Thèse") & outcome_RDoC == "Understanding mental states (non-adjusted)")
dat.meta4$var = dat.meta4$se^2
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.791 0.0783 10.105 44.66 <0.001 ***
## 2 Type_publicationThèse -0.195 0.1975 -0.986 8.84 0.35
SCE.S4 <- metafor::rma.mv(yi = es, V = var,
data = dat.meta4,
mods = ~ Type_publication - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S4, vcov = "CR2", cluster = dat.meta4$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_publicationArticle 0.791 0.0783 10.10 44.66 <0.001 ***
## 2 Type_publicationThèse 0.597 0.1813 3.29 6.68 0.0142 *
dat.meta.S10 = subset(dat.meta, !is.na(rob_tot) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S10 <- with(dat.meta.S10,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate
## 1 intrcpt 1.13282
## 2 rob_tot 0.01513
## 3 outcome_RDoCReception of facial communication (non-adjusted) -1.07371
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.48000
## 5 rob_tot:outcome_RDoCReception of facial communication (non-adjusted) 0.07767
## 6 rob_tot:outcome_RDoCUnderstanding mental states (non-adjusted) 0.00839
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.2725 4.156 5.60 0.00695 **
## 2 0.0474 0.319 4.05 0.76560
## 3 0.4356 -2.465 21.11 0.02237 *
## 4 0.2795 -1.717 6.39 0.13365
## 5 0.0739 1.051 19.70 0.30594
## 6 0.0486 0.173 5.14 0.86950
anova(SCE.S10, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.6488, p-val = 0.4385
SCE.S10 <- metafor::rma.mv(yi = es, V = V.SCE.S10,
data = dat.meta.S10,
mods = ~ rob_tot + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S10, vcov = "CR2", cluster = dat.meta.S10$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.064 0.1624
## 2 rob_tot 0.027 0.0274
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.587 0.1064
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.433 0.1054
## t-stat d.f. p-val (Satt) Sig.
## 1 6.548 11.5 <0.001 ***
## 2 0.985 6.4 0.36
## 3 -5.517 88.3 <0.001 ***
## 4 -4.105 99.4 <0.001 ***
ggplot(dat.meta.S10, aes(x = rob_tot, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth() + #method ="lm"
theme_bw()
dat.meta.S11 = subset(dat.meta, !is.na(Type_mesure) & outcome_RDoC== "Understanding mental states (non-adjusted)")
dat.meta.S11$vi = dat.meta.S11$se^2
dat.meta.S11$es_id = 1:nrow(dat.meta.S11)
SCE.S11 <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ Type_mesure ,
random = ~ 1 | ID_study/es_id)
clubSandwich::coef_test(SCE.S11, vcov = "CR2", cluster = dat.meta.S11$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 intrcpt 0.741 0.0723 10.25 48.5 <0.001 ***
## 2 Type_mesureReport 0.229 0.1935 1.18 11.9 0.26
SCE.S11wi <- metafor::rma.mv(yi = es, V = vi,
data = dat.meta.S11,
mods = ~ Type_mesure - 1,
random = ~ 1 | ID_study/es_id)
clubSandwich::coef_test(SCE.S11wi, vcov = "CR2", cluster = dat.meta.S11$ID_study)
## Coef. Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 Type_mesureParadigm 0.741 0.0723 10.25 48.5 <0.001 ***
## 2 Type_mesureReport 0.970 0.1960 4.95 13.4 <0.001 ***
dat.meta.S5 = subset(dat.meta,
emot_spec %in% c("Happy", "Sad", "Surprise", "Fear", "Disgust", "Anger") &
grepl("Reception of facial", dat.meta$outcome_RDoC, fixed = TRUE) &
!grepl("(adjusted)", dat.meta$outcome_RDoC, fixed = TRUE))
V.SCE.S5 <- with(dat.meta.S5,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = emot_spec))
# all.equal(dat.meta$se^2, diag(unlist(V.SCE)))
SCE.S5 <- metafor::rma.mv(yi = es, V = V.SCE.S5,
data = dat.meta.S5,
mods = ~ emot_spec - 1,
random = ~ emot_spec | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.ISQ.S5 <- metafor::rma.mv(yi = es, V = V.SCE.S5,
data = dat.meta.S5,
mods = ~ emot_spec - 1)
res.SCE.S5 <- data.frame(clubSandwich::coef_test(SCE.S5, vcov = "CR2", cluster = dat.meta.S5$ID_study)) # , cluster = df.ES$researchgroup
res.SCE.ci.S5 = data.frame(clubSandwich::conf_int(SCE.S5, vcov = "CR2", cluster = dat.meta.S5$ID_study))
res.SCE.S5$emot_spec <- gsub("emot_spec", "", row.names(res.SCE.S5))
res.SCE.ci.S5$emot_spec <- gsub("emot_spec", "", row.names(res.SCE.ci.S5))
res.SCE.S5 = dplyr::left_join(res.SCE.S5, res.SCE.ci.S5)
## Joining, by = c("beta", "SE", "df", "emot_spec")
res.SCE.S5$I2 = het(SCE.S5, SCE.ISQ.S5)
res.SCE.S5$tau2 = SCE.S5$tau2
res.SCE.clean.S5 = subset(res.SCE.S5, SE > 0.000001)
dat_emot$emot_spec = dat_emot$Nom_sousdim_clean
res_S5 <- left_join(res.SCE.clean.S5, dat_emot)
## Joining, by = "emot_spec"
res_S5[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")] <- apply(res_S5[,c("beta", "SE", "tstat", "df", "p_Satt", "CI_L", "CI_U", "I2", "n_studies", "n_nexp_out" , "n_exp_out")], 2, function(x) round(x, 3))
DT::datatable(res_S5,
rownames = FALSE,
options = list( # options
scrollX = TRUE,
dom = c('ft'),
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center',
targets = "_all"))))
res_S5$raw_outcome <- gsub(r"{\s*\([^\)]+\)}","",
as.character(res_S5$Nom_sousdim_clean))
tab.plot.S5 <- data.frame(
Outcome = do.call(rbind, lapply(res_S5$Nom_sousdim_clean,
function(x) paste(strwrap(x, width = 60),
collapse = "\n"))),
n_ADHD = res_S5$n_exp_out,
n_nexpT = res_S5$n_nexp_out,
n_studies = res_S5$n_studies,
I2 = paste0(round(res_S5$I2), "%"))
value_num_plot_S5 = data.frame(apply(res_S5[, c("beta", "SE")], 2, function(x) as.numeric(as.character(x))))
forest_modif(x = value_num_plot_S5[ ,c("beta", "SE")],
variant = "classic",
col = "Greys", xlab = "SMD", annotate_CI = TRUE,
study_table = tab.plot.S5,
group = res_S5$raw_outcome,
type = "study_only",
text_size = 3.5,
x_limit = c(-1, 2),
N = tab.plot.S5$n_ADHD + tab.plot.S5$n_nexpT,
x_breaks = seq(-3, 3, 1)
)
dat.meta.S6 = subset(dat.meta, !is.na(age) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate
## 1 intrcpt 1.26246
## 2 age -0.00415
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.44699
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.24692
## 5 age:outcome_RDoCReception of facial communication (non-adjusted) -0.01131
## 6 age:outcome_RDoCUnderstanding mental states (non-adjusted) -0.01557
## SE t-stat d.f. p-val (Satt) Sig.
## 1 1.0326 1.2226 17.7 0.237
## 2 0.0994 -0.0418 15.5 0.967
## 3 1.1470 -0.3897 32.4 0.699
## 4 1.2986 -0.1901 36.0 0.850
## 5 0.1105 -0.1023 26.5 0.919
## 6 0.1244 -0.1252 31.3 0.901
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 0.1316, p-val = 0.9363
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.3459 0.4465
## 2 age -0.0123 0.0417
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.5645 0.1048
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.4103 0.1036
## t-stat d.f. p-val (Satt) Sig.
## 1 3.014 44.8 0.00423 **
## 2 -0.295 33.5 0.76953
## 3 -5.384 86.5 < 0.001 ***
## 4 -3.961 100.3 < 0.001 ***
ggplot(dat.meta.S6, aes(x = age, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S6 = subset(dat.meta, !is.na(age_diff) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
V.SCE.S6 <- with(dat.meta.S6,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef.
## 1 intrcpt
## 2 age_diff
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 age_diff:outcome_RDoCReception of facial communication (non-adjusted)
## 6 age_diff:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.21622 0.0785 15.4931 79.23 <0.001 ***
## 2 -0.05515 0.2292 -0.2406 3.44 0.823
## 3 -0.55690 0.1106 -5.0361 87.49 <0.001 ***
## 4 -0.41372 0.1064 -3.8869 101.97 <0.001 ***
## 5 -0.04965 0.2488 -0.1996 5.46 0.849
## 6 0.00925 0.2552 0.0362 5.55 0.972
anova(SCE.S6, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 1.7257, p-val = 0.4220
SCE.S6 <- metafor::rma.mv(yi = es, V = V.SCE.S6,
data = dat.meta.S6,
mods = ~ age_diff + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S6, vcov = "CR2", cluster = dat.meta.S6$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.2157 0.0760
## 2 age_diff -0.0624 0.0584
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.5612 0.1082
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.4132 0.1050
## t-stat d.f. p-val (Satt) Sig.
## 1 15.99 79.29 <0.001 ***
## 2 -1.07 6.71 0.323
## 3 -5.19 88.52 <0.001 ***
## 4 -3.93 101.94 <0.001 ***
ggplot(dat.meta.S6, aes(x = age_diff, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth() +
theme_bw()
dat.meta.S7_a = subset(dat.meta, !is.na(percentage_ASD) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]) & percentage_ASD %in% c(0,100))
dat.meta.S7_a$percentage_ASD = factor(dat.meta.S7_a$percentage_ASD)
V.SCE.S7_a <- with(dat.meta.S7_a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S7_a <- metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_ASD * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_a, vcov = "CR2", cluster = dat.meta.S7_a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_ASD100
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.333 0.0961 13.88 45.40 < 0.001 ***
## 2 1.059 0.2195 4.82 4.62 0.00588 **
## 3 -0.765 0.1375 -5.57 50.26 < 0.001 ***
## 4 -0.524 0.1413 -3.71 55.82 < 0.001 ***
## 5 -0.979 0.2187 -4.48 2.62 0.02762 *
## 6 -0.752 0.2507 -3.00 3.48 0.04775 *
anova(SCE.S7_a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 187.9798, p-val < .0001
SCE.S7_a_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_a,
data = dat.meta.S7_a,
mods = ~ percentage_ASD : outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
SCE.S7_a_ph
##
## Multivariate Meta-Analysis Model (k = 376; method: REML)
##
## Variance Components:
##
## outer factor: ID_study (nlvls = 76)
## inner factor: outcome_RDoC (nlvls = 3)
##
## estim sqrt k.lvl fixed
## tau^2.1 0.3634 0.6028 120 no
## tau^2.2 0.2202 0.4693 131 no
## tau^2.3 0.2980 0.5459 125 no
## level
## tau^2.1 Mixed social processes (non-adjusted)
## tau^2.2 Reception of facial communication (non-adjusted)
## tau^2.3 Understanding mental states (non-adjusted)
##
## Test for Residual Heterogeneity:
## QE(df = 370) = 6343.8250, p-val < .0001
##
## Test of Moderators (coefficients 1:6):
## QM(df = 6) = 801.6536, p-val < .0001
##
## Model Results:
##
## estimate
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) 1.3334
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) 2.3923
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) 0.5682
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) 0.6484
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) 0.8093
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) 1.1162
## se
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) 0.0963
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) 0.1062
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) 0.1043
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) 0.1190
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) 0.1046
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) 0.1158
## zval
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) 13.8460
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) 22.5282
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) 5.4476
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) 5.4502
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) 7.7362
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) 9.6390
## pval
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) <.0001
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) <.0001
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) <.0001
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) <.0001
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) <.0001
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) <.0001
## ci.lb
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) 1.1447
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) 2.1842
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) 0.3638
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) 0.4152
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) 0.6043
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) 0.8892
## ci.ub
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) 1.5222
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) 2.6005
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) 0.7727
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) 0.8816
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) 1.0144
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) 1.3432
##
## percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) ***
## percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) ***
## percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) ***
## percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) ***
## percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) ***
## percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) ***
##
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(SCE.S7_a_ph, L=c(-1,1,0,0,0,0))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_RDoCMixed social processes (non-adjusted) + percentage_ASD100:outcome_RDoCMixed social processes (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 1.0589 0.0499 21.2047 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 449.6405, p-val < .0001
anova(SCE.S7_a_ph, L=c(0,0,-1,1,0,0))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_RDoCReception of facial communication (non-adjusted) + percentage_ASD100:outcome_RDoCReception of facial communication (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.0801 0.0594 1.3495 0.1772
##
## Test of Hypothesis:
## QM(df = 1) = 1.8212, p-val = 0.1772
anova(SCE.S7_a_ph, L=c(0,0,0,0,-1,1))
##
## Hypothesis:
## 1: -percentage_ASD0:outcome_RDoCUnderstanding mental states (non-adjusted) + percentage_ASD100:outcome_RDoCUnderstanding mental states (non-adjusted) = 0
##
## Results:
## estimate se zval pval
## 1: 0.3069 0.0520 5.9049 <.0001
##
## Test of Hypothesis:
## QM(df = 1) = 34.8673, p-val < .0001
dat.meta.S7_b = subset(dat.meta, !is.na(percentage_CD_ODD) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S7_b$percentage_CD_ODD = as.numeric(as.character(dat.meta.S7_b$percentage_CD_ODD))
V.SCE.S7_b <- with(dat.meta.S7_b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S7_b <- metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_CD_ODD * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_CD_ODD
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_CD_ODD:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_CD_ODD:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.24897 0.12779 9.77 35.43 < 0.001 ***
## 2 0.00381 0.00237 1.61 1.20 0.32339
## 3 -0.57724 0.16979 -3.40 50.73 0.00132 **
## 4 -0.38735 0.16563 -2.34 50.38 0.02336 *
## 5 -0.00349 0.00283 -1.23 1.74 0.35823
## 6 -0.00473 0.00256 -1.85 1.68 0.22971
anova(SCE.S7_b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 18.3078, p-val = 0.0001
SCE.S7_b_ph = metafor::rma.mv(yi = es, V = V.SCE.S7_b,
data = dat.meta.S7_b,
mods = ~ percentage_CD_ODD : outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S7_b_ph, vcov = "CR2", cluster = dat.meta.S7_b$ID_study)
## Coef.
## 1 percentage_CD_ODD:outcome_RDoCMixed social processes (non-adjusted)
## 2 percentage_CD_ODD:outcome_RDoCReception of facial communication (non-adjusted)
## 3 percentage_CD_ODD:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 0.004147 0.00196 2.112 1.14 0.257
## 2 0.000432 0.00153 0.282 2.25 0.801
## 3 -0.000504 0.00102 -0.496 1.27 0.692
ggplot(dat.meta.S7_b, aes(x = percentage_CD_ODD, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S8 = subset(dat.meta, !is.na(sex) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S8$sex = as.numeric(as.character(dat.meta.S8$sex))
dat.meta.S8$sex[dat.meta.S8$sex > 100] <- NA
V.SCE.S8 <- with(dat.meta.S8,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate
## 1 intrcpt 1.44135
## 2 sex -0.00777
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.86490
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.66746
## 5 sex:outcome_RDoCReception of facial communication (non-adjusted) 0.00958
## 6 sex:outcome_RDoCUnderstanding mental states (non-adjusted) 0.00833
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.18176 7.930 26.89 < 0.001 ***
## 2 0.00627 -1.240 5.45 0.26564
## 3 0.26480 -3.266 22.45 0.00347 **
## 4 0.22285 -2.995 29.13 0.00555 **
## 5 0.00971 0.986 10.41 0.34637
## 6 0.00715 1.164 11.80 0.26740
anova(SCE.S8, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 6.7788, p-val = 0.0337
SCE.S8 <- metafor::rma.mv(yi = es, V = V.SCE.S8,
data = dat.meta.S8,
mods = ~ sex + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S8, vcov = "CR2", cluster = dat.meta.S8$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.34897 0.13682
## 2 sex -0.00448 0.00448
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.60894 0.11600
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.44989 0.10744
## t-stat d.f. p-val (Satt) Sig.
## 1 9.86 54.6 <0.001 ***
## 2 -1.00 11.2 0.338
## 3 -5.25 71.0 <0.001 ***
## 4 -4.19 90.5 <0.001 ***
ggplot(dat.meta.S8, aes(x = sex, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S9 = subset(dat.meta, !is.na(iq) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq = as.numeric(as.character(dat.meta.S9$iq))
# dat.meta.S9$iq[dat.meta.S9$iq > 100] <- NA
V.SCE.S9 <- with(dat.meta.S9,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate
## 1 intrcpt -0.904696
## 2 iq 0.020699
## 3 outcome_RDoCReception of facial communication (non-adjusted) 2.137153
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.646296
## 5 iq:outcome_RDoCReception of facial communication (non-adjusted) -0.026903
## 6 iq:outcome_RDoCUnderstanding mental states (non-adjusted) 0.000924
## SE t-stat d.f. p-val (Satt) Sig.
## 1 7.2554 -0.1247 5.69 0.905
## 2 0.0697 0.2969 5.82 0.777
## 3 7.5143 0.2844 8.29 0.783
## 4 9.2993 -0.0695 5.41 0.947
## 5 0.0722 -0.3728 8.34 0.719
## 6 0.0892 0.0104 5.28 0.992
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.2610, p-val = 0.3229
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt -0.3227 3.9968
## 2 iq 0.0151 0.0385
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.6526 0.1537
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.5448 0.1387
## t-stat d.f. p-val (Satt) Sig.
## 1 -0.0807 9.77 0.937
## 2 0.3924 9.79 0.703
## 3 -4.2470 43.58 <0.001 ***
## 4 -3.9290 45.10 <0.001 ***
ggplot(dat.meta.S9, aes(x = iq, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S9 = subset(dat.meta, !is.na(iq_diff) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S9$iq_diff = as.numeric(as.character(dat.meta.S9$iq_diff))
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef.
## 1 intrcpt
## 2 iq_diff
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 iq_diff:outcome_RDoCReception of facial communication (non-adjusted)
## 6 iq_diff:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.363368 0.4047 3.36917 29.97 0.00209 **
## 2 0.013140 0.0441 0.29812 5.39 0.77676
## 3 -0.790680 0.4146 -1.90726 37.65 0.06414 .
## 4 -0.554209 0.4759 -1.16447 33.85 0.25238
## 5 -0.017017 0.0468 -0.36396 3.35 0.73768
## 6 0.000401 0.0545 0.00737 5.85 0.99437
anova(SCE.S9, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.2257, p-val = 0.3286
SCE.S9 <- metafor::rma.mv(yi = es, V = V.SCE.S9,
data = dat.meta.S9,
mods = ~ iq_diff + outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S9, vcov = "CR2", cluster = dat.meta.S9$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.3423 0.2553
## 2 iq_diff 0.0107 0.0246
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.7065 0.1910
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.5525 0.1400
## t-stat d.f. p-val (Satt) Sig.
## 1 5.257 33.28 <0.001 ***
## 2 0.436 8.51 0.674
## 3 -3.698 43.75 <0.001 ***
## 4 -3.948 44.93 <0.001 ***
ggplot(dat.meta.S9, aes(x = iq_diff, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S12.a = subset(dat.meta, !is.na(percentage_inattentive) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.a$percentage_inattentive = as.numeric(as.character(dat.meta.S12.a$percentage_inattentive))
V.SCE.S12.a <- with(dat.meta.S12.a,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_inattentive
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_inattentive:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_inattentive:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.33e+00 0.113388 11.6973 33.72 < 0.001 ***
## 2 -2.86e-03 0.000694 -4.1235 1.13 0.12849
## 3 -5.50e-01 0.204845 -2.6863 14.61 0.01721 *
## 4 -4.72e-01 0.168141 -2.8044 41.71 0.00762 **
## 5 -7.51e-05 0.005913 -0.0127 8.43 0.99017
## 6 3.66e-03 0.000899 4.0764 1.12 0.13271
anova(SCE.S12.a, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 33.4410, p-val < .0001
SCE.S12.a <- metafor::rma.mv(yi = es, V = V.SCE.S12.a,
data = dat.meta.S12.a,
mods = ~ percentage_inattentive:outcome_RDoC - 1,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.a, vcov = "CR2", cluster = dat.meta.S12.a$ID_study)
## Coef.
## 1 percentage_inattentive:outcome_RDoCMixed social processes (non-adjusted)
## 2 percentage_inattentive:outcome_RDoCReception of facial communication (non-adjusted)
## 3 percentage_inattentive:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 -0.002799 0.000795 -3.52 1.13 0.1538
## 2 0.013239 0.005376 2.46 7.34 0.0418 *
## 3 0.000975 0.000331 2.95 1.05 0.1992
ggplot(dat.meta.S12.a, aes(x = percentage_inattentive, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S12.b = subset(dat.meta, !is.na(percentage_hyperactive) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.b$percentage_hyperactive = as.numeric(as.character(dat.meta.S12.b$percentage_hyperactive))
V.SCE.S12.b <- with(dat.meta.S12.b,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_hyperactive
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_hyperactive:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_hyperactive:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.260353 0.1580 7.978 32.46 <0.001 ***
## 2 0.000807 0.0106 0.076 1.16 0.9504
## 3 -0.606438 0.2032 -2.984 35.80 0.0051 **
## 4 -0.432498 0.2143 -2.018 40.58 0.0502 .
## 5 0.003804 0.0120 0.317 1.61 0.7878
## 6 0.006235 0.0195 0.320 1.94 0.7798
anova(SCE.S12.b, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 2.6712, p-val = 0.2630
SCE.S12.b <- metafor::rma.mv(yi = es, V = V.SCE.S12.b,
data = dat.meta.S12.b,
mods = ~ percentage_hyperactive+outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.b, vcov = "CR2", cluster = dat.meta.S12.b$ID_study)
## Coef. Estimate SE
## 1 intrcpt 1.25097 0.13739
## 2 percentage_hyperactive 0.00177 0.00721
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.57155 0.16800
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.38331 0.16787
## t-stat d.f. p-val (Satt) Sig.
## 1 9.105 32.74 < 0.001 ***
## 2 0.246 1.52 0.83500
## 3 -3.402 39.13 0.00155 **
## 4 -2.283 42.44 0.02748 *
ggplot(dat.meta.S12.b, aes(x = percentage_hyperactive, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()
dat.meta.S12.c = subset(dat.meta, !is.na(percentage_combined) & outcome_RDoC %in% unique(synth_n$outcome_RDoC[synth_n$nstudy1 > 20]))
dat.meta.S12.c$percentage_combined = as.numeric(as.character(dat.meta.S12.c$percentage_combined))
V.SCE.S12.c <- with(dat.meta.S12.c,
clubSandwich::impute_covariance_matrix(
vi = se^2,
cluster = ID_study,
r = 0.8,
return_list = FALSE,
smooth_vi = TRUE,
subgroup = outcome_RDoC))
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined * outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef.
## 1 intrcpt
## 2 percentage_combined
## 3 outcome_RDoCReception of facial communication (non-adjusted)
## 4 outcome_RDoCUnderstanding mental states (non-adjusted)
## 5 percentage_combined:outcome_RDoCReception of facial communication (non-adjusted)
## 6 percentage_combined:outcome_RDoCUnderstanding mental states (non-adjusted)
## Estimate SE t-stat d.f. p-val (Satt) Sig.
## 1 1.05997 0.129152 8.207 31.17 <0.001 ***
## 2 0.00298 0.000578 5.154 1.06 0.1110
## 3 -0.26144 0.339580 -0.770 7.55 0.4648
## 4 -0.12509 0.182362 -0.686 37.05 0.4970
## 5 -0.00462 0.004235 -1.090 7.46 0.3097
## 6 -0.00389 0.000623 -6.232 1.12 0.0831 .
anova(SCE.S12.c, btt=5:6)
##
## Test of Moderators (coefficients 5:6):
## QM(df = 2) = 38.0168, p-val < .0001
SCE.S12.c <- metafor::rma.mv(yi = es, V = V.SCE.S12.c,
data = dat.meta.S12.c,
mods = ~ percentage_combined+outcome_RDoC,
random = ~ outcome_RDoC | ID_study,
struct = "DIAG",
sparse = TRUE)
clubSandwich::coef_test(SCE.S12.c, vcov = "CR2", cluster = dat.meta.S12.c$ID_study)
## Coef. Estimate
## 1 intrcpt 1.15551
## 2 percentage_combined 0.00153
## 3 outcome_RDoCReception of facial communication (non-adjusted) -0.55775
## 4 outcome_RDoCUnderstanding mental states (non-adjusted) -0.36555
## SE t-stat d.f. p-val (Satt) Sig.
## 1 0.123538 9.35 32.70 < 0.001 ***
## 2 0.000438 3.50 1.13 0.15445
## 3 0.166051 -3.36 39.26 0.00175 **
## 4 0.169476 -2.16 42.64 0.03669 *
ggplot(dat.meta.S12.c, aes(x = percentage_combined, y = es)) +
facet_wrap(~outcome_RDoC) +
geom_point(size = 2, alpha = 0.2) +
geom_smooth(method ="lm") +
theme_bw()